package Part3_Collections_工具类;

import org.junit.Test;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * ClassName: Demo
 * Package: IntelliJ IDEA
 * Description:
 * Written by HanXu
 * Create 2024.04.16 20:52
 */


public class Demo {

    /** 排序操作：
     - reverse(List)：反转 List 中元素的顺序
     - shuffle(List)：对 List 集合元素进行随机排序
     - sort(List)：根据元素的自然顺序对指定 List 集合元素按升序排序
     - sort(List，Comparator)：根据指定的 Comparator 产生的顺序对 List 集合元素进行排序
     - swap(List，int， int)：将指定 list 集合中的 i 处元素和 j 处元素进行交换
     */
    @Test
    public void test1(){
        List list = Arrays.asList(45, 43, 65, 6, 43, 2, 32, 45, 56, 34, 23);
        System.out.println(list);

        Collections.shuffle(list);
        System.out.println(list);

        Collections.reverse(list);
        System.out.println(list);
    }


    /** 查找
    - Object max(Collection)：根据元素的自然顺序，返回给定集合中的最大元素
    - Object max(Collection，Comparator)：根据 Comparator 指定的顺序，返回给定集合中的最大元素
    - Object min(Collection)：根据元素的自然顺序，返回给定集合中的最小元素
    - Object min(Collection，Comparator)：根据 Comparator 指定的顺序，返回给定集合中的最小元素
    - int binarySearch(List list,T key): 在List集合中查找某个元素的下标，但是List的元素必须是T或T的子类对象，而且必须是可比较大小的，即支持自然排序的。
                                         而且集合也事先必须是有序的，否则结果不确定。
    - int binarySearch(List list,T key,Comparator c): 在List集合中查找某个元素的下标，但是List的元素必须是T或T的子类对象，
                                                      而且集合也事先必须是按照c比较器规则进行排序过的，否则结果不确定。
    - int frequency(Collection c，Object o)：返回指定集合中指定元素的出现次数
    */

    @Test
    public void test2(){
        List list = Arrays.asList(45, 43, 65, 6, 43, 2, 32, 45, 56, 34, 23);
        Collections.sort(list);
        System.out.println(list);
        int i = Collections.binarySearch(list, 32);
        System.out.println(i);//打印下标


    }
}
